//package com.cyzy.service.impl;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.cyzy.mapper.CropMapper;
//import com.cyzy.mapper.TbLandMapper;
//import com.cyzy.mapper.TbLandorderMapper;
//import com.cyzy.mapper.TbSecondKillMapper;
//import com.cyzy.pojo.*;
//import com.cyzy.service.CropService;
//import com.cyzy.service.LandSecondService;
//import com.github.yulichang.query.MPJQueryWrapper;
//import com.github.yulichang.wrapper.MPJLambdaWrapper;
//import org.apache.rocketmq.spring.core.RocketMQTemplate;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Service;
//
//import java.util.Calendar;
//import java.util.Date;
//import java.util.List;
//
//@Service
//public class LandSecondServiceImpl extends ServiceImpl<TbSecondKillMapper, TbSecondkill> implements LandSecondService {
//    @Autowired
//    private TbSecondKillMapper secondKillMapper;
//    @Autowired
//    private TbLandMapper tbLandMapper;
//    @Autowired
//    private TbLandorderMapper tbLandorderMapper;
//    @Autowired
//    private RedisTemplate<String, Long> redisTemplate;
//    @Autowired
//    private RocketMQTemplate rocketMQTemplate;
//    //减库存
//    public boolean reduceStock(Long goodsId, int quantity) {
//        String stockKey = "seckill:stock:" + goodsId;
//        Long stock = redisTemplate.opsForValue().decrement(stockKey, quantity);
//        if (stock < 0) {
//            // 如果库存小于0，回退库存
//            redisTemplate.opsForValue().increment(stockKey, quantity);
//            return false; // 库存不足
//        }
//        return true; // 库存减少成功
//    }
//    public String seckill(Long userId,Long skId,Long landId,Long skNum) {
//        String limitKey = "seckill:limit:" + userId;
//        // 检查用户和活动状态
//        if (!checkUserAndActivity(skNum)) {
//
//
//        }
//
//        // Redis原子减库存
//
//        Long stock = redisTemplate.opsForValue().decrement(stockKey);
//        if (stock < 0) {
//            redisTemplate.opsForValue().increment(stockKey);
//            return "已售罄";
//        }
//
//        // 生成订单消息
//        TbLandorder message = new TbLandorder();
//
//        rocketMQTemplate.convertAndSend("seckill_topic", message);
//
//        return Result.success("排队中");
//    }
//
//    private boolean checkUserAndActivity(Long skNum) {
//        // 检查用户是否符合参与条件
//        Long l = redisTemplate.opsForValue().get(limitKey);
//        if (l>skNum){
//            return true;
//        }else {
//            return false;
//        }
//
//    }
//
//    @Override
//    public List<TbSecondkill> selectAll(TbSecondkill secondkill) {
//        // 获取当前时间
//        Date now = new Date();
//        // 计算12小时前的时间
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(now);
//        calendar.add(Calendar.HOUR, -24);
//        Date twelveHoursAgo = calendar.getTime();
//
//        // 构建查询条件
//        MPJLambdaWrapper<TbSecondkill> queryWrapper = new MPJLambdaWrapper<>();
//
//        queryWrapper
//                .selectAs(TbLand::getPrice, TbSecondkill::getSkPrice)
//                .selectAs(TbLand::getLandid, TbSecondkill::getFieldId)
//                .selectAs(TbSecondkill::getSkId, TbSecondkill::getSkId)
//                .selectAs(TbLand::getPosition, TbSecondkill::getPosition)
//                .selectAs(TbLand::getArea, TbSecondkill::getArea)
//                .selectAs(TbLand::getFarmer, TbSecondkill::getFarmer)
//                .selectAs(TbLand::getInfo, TbSecondkill::getInfo)
//                .selectAs(TbSecondkill::getSkNum, TbSecondkill::getSkNum)
//
//                .selectAs(TbSecondkill::getSkstarttime, TbSecondkill::getSkstarttime)
//                .selectAs(TbSecondkill::getSkendtime, TbSecondkill::getSkendtime)
//
//                .leftJoin(TbLand.class, TbLand::getLandid, TbSecondkill::getFieldId)
//                .ge(TbSecondkill::getSkstarttime, twelveHoursAgo)// 大于等于12小时前
//                .ge(TbSecondkill::getSkendtime,now);
//
//        return secondKillMapper.selectList(queryWrapper);
//    }
//
//
//    //查看订单详情
//    @Override
//    public TbSecondkill selectBySkId(Long skId) {
//        MPJLambdaWrapper<TbSecondkill> queryWrapper = new MPJLambdaWrapper<>();
//        queryWrapper
//                .selectAs(TbLand::getPrice, TbSecondkill::getSkPrice)
//                .selectAs(TbLand::getPosition, TbSecondkill::getPosition)
//                .selectAs(TbLand::getArea, TbSecondkill::getArea)
//                .selectAs(TbLand::getFarmer, TbSecondkill::getFarmer)
//                .selectAs(TbLand::getInfo, TbSecondkill::getInfo)
//                .selectAs(TbLand::getImg, TbSecondkill::getImg)
//                .selectAs(TbSecondkill::getSkNum, TbSecondkill::getSkNum)
//                .leftJoin(TbLand.class, TbLand::getLandid, TbSecondkill::getFieldId)
//                .eq(TbSecondkill::getSkId,skId);
//        return secondKillMapper.selectList(queryWrapper).get(0);
//    }
//
//    @Override
//    public TbLand selectLandById(Long landId) {
//        LambdaQueryWrapper<TbLand> wrapper = new LambdaQueryWrapper<>();
//        wrapper.eq(TbLand::getLandid,landId);
//        return tbLandMapper.selectOne(wrapper);
//    }
//
//    @Override
//    public int generateOrder(TbLandorder tbLandorder) {
//        int insert = tbLandorderMapper.insert(tbLandorder);
//        return insert;
//    }
//
//    @Override
//    public TbLandorder selectOrderById(Long orderId) {
//        LambdaQueryWrapper<TbLandorder> wrapper = new LambdaQueryWrapper<>();
//        wrapper.eq(TbLandorder::getOrderid,orderId);
//        TbLandorder tbLandorder = tbLandorderMapper.selectOne(wrapper);
//        return tbLandorder;
//    }
//
//}
